The present application relates to software, and more specifically to software for facilitating proxy operations in computer networks.
Proxy software is employed in various demanding applications, including content filtering, censoring, anonymizing, tracking, implementing gateways, and so on. Such applications often demand efficient mechanisms for accurately and consistently translating communications between a client and a content server via an intermediate proxy.
A proxy, such as a proxy server, may be any communication intermediary between a client and a server from which the client requests content. For example, a client may connect to a proxy server to request content, such as a service, file, connection, web page, or other resource from a content server. The proxy server evaluates the client request according to predetermined rules, such as filtering, censoring, or tracking rules. The proxy server then selectively provides requested content to the client in accordance with the predetermined rules.
When relaying HyperText Markup Language (HTML) content, such as a webpage, between a client and content server, certain Uniform Resource Locator (URL) links and associated resources must be adjusted or translated to function as intended. The adjusted or translated links are said to be rewritten relative to proxy. However, certain URL links (also called hyperlinks) and resources may not be present in the HTML markup offered by a content server. For example, the HTML markup may contain embedded URL-generating scripts to be run on a client browser.
Conventionally, dynamically generated hyperlinks output by the URL-generating scripts bypass proxy server hyperlink adjustments or translations. Hence, such dynamically generated hyperlinks may become inoperable when proxied using conventional link rewriting mechanisms.